#pragma once
#include "SplitTool.h"
#include "Configuration.h"
using namespace std;

//词典创建类
class DictProducer{
public:
    DictProducer(Configuration *config); //英文词典的构造函数
    DictProducer(Configuration *config, SplitTool *splitTool); //中文词典的构造函数
    ~DictProducer(); //析构函数
    void buildEnDict();   //创建英文词典
    void buildCnDict();   //创建中文词典
    void createEnIndex(); //创建英文索引
    void createCnIndex(); //创建中文索引
    void storeDict(const string &filepath);  //将词典写入文件
    void storeIndex(const string &filepath); //将索引写入文件
    void showFiles() const; //查看文件路径
    void showDict() const;  //查看词典
    void showIndex() const; //查看索引
private:
    void getFiles(); //获取文件的相对路径集合
    void pushDict(const string &word); //存储某个单词
private:
    Configuration *_config; //配置文件类
    SplitTool *_splitTool; //分词工具
    vector<string> _files; //语料库文件的相对路径集合
    map<string, int> _dict; //词典
    map<string, set<int>> _index; //词典索引
    bool _forZh; //是否创建的是中文词典
};

